#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
#include<unistd.h>

#define ONE (1<<0) // 1
#define TWO (1<<1) // 2
#define THREE (1<<2) // 4
#define FOUR (1<<3) // 8

int main()
{
    close(0);
    //int fd=open("log.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);    //输出重定向
    //int fd=open("log.txt",O_CREAT|O_WRONLY|O_APPEND,0666);   //追加重定向
    int fd=open("log.txt",O_RDONLY,0666);    //输入重定向
    if(fd<0)
    {
        perror("open");
        return 1;
    }

    printf("fd:%d\n",fd);
    char buff[1024];
    ssize_t s=read(0,buff,sizeof(buff));
    if(s<0) return 1;
    buff[s]='\0';
    printf("%s\n",buff);

    //printf("fd->%d\n",fd);
      //const char* message="asdfgh";

     //write(1,message,strlen(message));

    close(fd);
    return 0;
}

///int main()
///{
///    close(1);
///    int n = printf("stdin->fd: %d\n", stdin->_fileno);
///    printf("stdout->fd: %d\n", stdout->_fileno);
///    printf("stderr->fd: %d\n", stderr->_fileno);
///    char buff[1024];
///    ssize_t ret=read(0,buff,sizeof(buff));
///    if(ret<0) return 1;
///    buff[ret]='\0';
///    printf("%s\n",buff);
///
///    fprintf(stderr, "printf ret: %d\n", n);

   // umask(0);
   // int fd1=open("log1.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);
   // int fd2=open("log2.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);
   // int fd3=open("log3.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);
   // int fd4=open("log4.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);
   // if(fd1<0)
   // {
   //     perror("open");
   //     return 1;
   // }

   // const char* message="11111111111111111111111111\n";

   // printf("fd1:%d\n",fd1);
   // printf("fd2:%d\n",fd2);
   // printf("fd3:%d\n",fd3);
   // printf("fd4:%d\n",fd4);
    //bin write(fd,message,strlen(message));

    //close(fd);
//}

//void show(int flags)
//{
//    if(flags&ONE) printf("hello function1\n");
//    if(flags&TWO) printf("hello function2\n");
//    if(flags&THREE) printf("hello function3\n");
//    if(flags&FOUR) printf("hello function4\n");
//}
//
//
//
//int main()
//{
//    printf("-----------------------------\n");
//    show(ONE);
//    printf("-----------------------------\n");
//    show(TWO);
//    printf("-----------------------------\n");
//
//    show(ONE|TWO);
//    printf("-----------------------------\n");
//    show(ONE|TWO|THREE);
//    printf("-----------------------------\n");
//    show(ONE|THREE);
//    printf("-----------------------------\n");
//    show(THREE|FOUR);
//    printf("-----------------------------\n");
//}


//int main()
//{
//    FILE* fp=fopen("log.txt","r");
//   // FILE* fp=fopen("log.txt","a");
//
//    if(fp==NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//
//    const char* message="asaafadae\n";
//    //fwrite(message,strlen(message),1,fp);
//    fwrite(message,strlen(message),1,stdout);
//    fprintf(stdout,"%s:%d\n",message,1234);
//    fprintf(stderr,"%s:%d\n",message,1234);
//    char buff[1024];
//    int ret=fread(buff,sizeof(char),sizeof(buff),fp);
//    buff[ret]='\0';
//    printf("%s",buff);
//    
//    
//    fclose(fp);
//
//    return 0;
//}
